#!/bin/bash
# 0.设置目录变量
OHOS_SRC_ROOT=$(cd "../../.." && pwd)

# 1. 解包系统镜像，得到鸿蒙系统文件
cd ${OHOS_SRC_ROOT}/out/ohos-arm-release/packages/phone/images
# Android sparse image 和 ext4 文件系统之间转换
simg2img system.img system.ext4
# 挂载 system 镜像
mkdir system-img
sudo mount system.ext4 system-img
simg2img vendor.img vendor.ext4
# 挂载 vendor 镜像
mkdir vendor-img
sudo mount vendor.ext4 vendor-img

# 2. 制作 SD 卡镜像
dd if=/dev/zero of=uboot.disk bs=1M count=1024
# 创建 4 个分区
sgdisk -n 0:0:+16M -c 0:kernel uboot.disk
sgdisk -n 0:0:+512M -c 0:rootfs uboot.disk
sgdisk -n 0:0:+64M -c 0:vendor uboot.disk
sgdisk -n 0:0:0 -c 0:userdata uboot.disk

# 3. 寻找一个空闲的loop设备，挂载 SD 卡镜像
loop=$(sudo losetup -f)
echo "found idle loop device: ${loop}"
sleep 1
sudo losetup ${loop} uboot.disk
sleep 3
sudo partprobe ${loop}
sleep 3
# 格式化分区
sudo mkfs.ext4 ${loop}p1
sudo mkfs.ext4 ${loop}p2
sudo mkfs.ext4 ${loop}p3
sudo mkfs.ext4 ${loop}p4

# 4. 将 kernel 和系统文件复制到 SD 卡镜像
mkdir p1
mkdir p2
sudo mount -t ext4 ${loop}p1 p1/
sudo mount -t ext4 ${loop}p2 p2/
sudo cp ${OHOS_SRC_ROOT}/out/KERNEL_OBJ/kernel/src_tmp/linux-4.19/arch/arm/boot/zImage p1/
sudo cp ${OHOS_SRC_ROOT}/out/KERNEL_OBJ/kernel/src_tmp/linux-4.19/arch/arm/boot/dts/vexpress-v2*.dtb p1/
sudo cp -raf system-img/* p2/
sudo cp -raf vendor-img/* p2/vendor/

# 卸载镜像
sudo umount system-img
sudo umount vendor-img
sudo umount p1 p2
sudo losetup -d ${loop}

rm -rf system-img
rm -rf vendor-img
rm -rf p1
rm -rf p2